package com.imooc.reflect;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.util.Scanner;

/**
 * Created by joe on 16-8-1.
 */
public class MethodDemo2 {
	public static void main(String[] args){
		UserService userService = new UserService();
		/**
		 * 通过键盘输入命令执行操作
		 * 输入update命令就调用update方法
		 * 输入delete命令就调用delete方法
		 * ...
		 */
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			System.out.println("请输入命令:");
			String action = br.readLine();//读取控制台输入的文字

			//原来的做法
			/*if("update".equals(action)){
				userService.update();
			}
			if("delete".equals(action)){
				userService.delete();
			}
			if("find".equals(action)){
				userService.find();
			}*/
			/**
			 * 利用反射
			 * action就是方法名称,都没有参数---->通过方法的反射操作就会简单的很多
			 * 通过方法对此昂进行反射操作
			 * 好处:在service中添加方法而不用修改这个执行的类
			 */
			Class c = userService.getClass();//获取userService的类类型
			Method m = c.getMethod(action);//获取方法
			m.invoke(userService);//执行这个方法,相当于执行userService.update()/find()/delete()

		}catch(Exception e){
			e.printStackTrace();
		}
	}

}
